package com.dkd.common.utils.uuid;

import java.security.SecureRandom;

public class UUIDUtils {
    private static final char[] CHARACTERS = {
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', // 跳过I（易混淆）
            'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', // 跳过O
            'W', 'X', 'Y', 'Z',
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', // 跳过i
            'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', // 跳过o
            'x', 'y', 'z',
            '2', '3', '4', '5', '6', '7', '8', '9'            // 跳过0/1/l（易混淆）
    };

    private static final SecureRandom RANDOM = new SecureRandom();
    private static final int ID_LENGTH = 8;
    private static final int CHAR_SET_SIZE = CHARACTERS.length;

    /**
     * 生成8位设备编号（示例：7Gp9qR2m）
     * @return 8位唯一字符串，仅含易读字符（避开0/O/1/I/l等易混淆字符）
     */
    public static String generateDeviceId() {
        char[] buffer = new char[ID_LENGTH];
        for (int i = 0; i < ID_LENGTH; i++) {
            buffer[i] = CHARACTERS[RANDOM.nextInt(CHAR_SET_SIZE)];
        }
        return new String(buffer);
    }
}
